package pe.edu.unmsm.fisi.sysllabus.integracion.dao.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;
import org.springframework.stereotype.Repository;

import com.ibatis.sqlmap.client.SqlMapClient;

import pe.edu.unmsm.fisi.sysllabus.integracion.dao.SyllabusxSemanaDAO;
import pe.edu.unmsm.fisi.sysllabus.negocio.modelo.dto.ActualizacionSyllabusDTO;
import pe.edu.unmsm.fisi.sysllabus.negocio.modelo.dto.SyllabusxSemanaDTO;
import pe.edu.unmsm.fisi.sysllabus.negocio.modelo.dto.VWSyllabusDTO;

@Repository
public class SyllabusxSemanaDAOImpl extends SqlMapClientDaoSupport implements SyllabusxSemanaDAO {

	@Autowired
	public SyllabusxSemanaDAOImpl(SqlMapClient sql) {
		super.setSqlMapClient(sql);
	}

	@Override
	public void insertSyllabusxSemana(SyllabusxSemanaDTO syllabus)
			throws DataAccessException {
		getSqlMapClientTemplate().insert("AvancexSemana.insertSyllabusxSemana", syllabus);
		
	}

	@Override
	public void updateSyllabusxSemana(SyllabusxSemanaDTO syllabus)
			throws DataAccessException {
		getSqlMapClientTemplate().update("AvancexSemana.updateSyllabusxSemana", syllabus);
		
	}

	@Override
	public SyllabusxSemanaDTO getSyllabusxSemana(Integer idSyllabus)
			throws DataAccessException {
		// TODO Auto-generated method stub
		return (SyllabusxSemanaDTO)getSqlMapClientTemplate().queryForObject(
				"AvancexSemana.getSyllabusxSemana", idSyllabus);
	}

	@Override
	public List<SyllabusxSemanaDTO> listSyllabusxSemanaxCurso(Integer idCurso)
			throws DataAccessException {
		// TODO Auto-generated method stub
		return (List<SyllabusxSemanaDTO>)getSqlMapClientTemplate().queryForList(
				"AvancexSemana.listarSyllabusxSemanaxCurso", idCurso);
	}

	@Override
	public List<VWSyllabusDTO> selectSyllabusxGrupo(Integer idGrupCurCronograma) {
		return (List<VWSyllabusDTO>)getSqlMapClientTemplate().queryForList(
				"AvancexSemana.selectSyllabusxGrupo", idGrupCurCronograma);
	}

	@Override
	public void insertAvanceSyllabusxProfesor(ActualizacionSyllabusDTO avance) {
		getSqlMapClientTemplate().insert("AvancexSemana.insertAvanceSyllabusxProfesor", avance);
	}

	@Override
	public List<VWSyllabusDTO> selectAvanceSyllPendientexGrup(
			Integer idGrupCurCronograma) {
		return (List<VWSyllabusDTO>)getSqlMapClientTemplate().
				queryForList("AvancexSemana.selectAvanceSyllPendientexGrup", idGrupCurCronograma);
	}

	@Override
	public List<VWSyllabusDTO> selectAvanceSyllxConfDelegxGrup(
			Integer idGrupCurCronograma) {
		return (List<VWSyllabusDTO>)getSqlMapClientTemplate().
				queryForList("AvancexSemana.selectAvanceSyllxConfDelegxGrup", idGrupCurCronograma);
	}

	@Override
	public List<VWSyllabusDTO> selectAvanceSyllTerminadosxGrup(
			Integer idGrupCurCronograma) {
		return (List<VWSyllabusDTO>)getSqlMapClientTemplate().
				queryForList("AvancexSemana.selectAvanceSyllTerminadosxGrup", idGrupCurCronograma);
	}

	@Override
	public ActualizacionSyllabusDTO selectAvanceSyllxidAvance(
			Integer idAvanceSyl) {
		return (ActualizacionSyllabusDTO)getSqlMapClientTemplate().queryForObject("AvancexSemana.selectAvanceSyllxidAvance", idAvanceSyl);
	}

	@Override
	public void updateAvanceSyllabusxSemana(ActualizacionSyllabusDTO avance) {
		getSqlMapClientTemplate().update("AvancexSemana.updateAvanceSyllabusxSemana", avance);
	}

}
